Ext.onReady(function() {
	if (username == null)
		return;
	Ext.QuickTips.init();

	function pageLoad() {
		Ext.define('ReportDetailModel', {
					extend : 'Ext.data.Model',
					fields : [{
								name : 'repId'
							}, {
								name : 'rusId'
							}, {
								name : 'repName'
							}, {
								name : 'repType'
							}, {
								name : 'appId'
							}, {
								name : 'repLines'
							}, {
								name : 'repAlerts'
							}, {
								name : 'repEffort'
							}, {
								name : 'repTeamAdjustment'
							}, {
								name : 'repTestFactor'
							}, {
								name : 'repAdjustedEffort'
							}, {
								name : 'teamId'
							}, {
								name : 'testId'
							}, {
								name : 'repCreateTime'
							}, {
								name : 'repFileUrl'
							}]
				});
		Ext.define('AlertModel', {
					extend : 'Ext.data.Model',
					fields : [{
								name : 'alertId'
							}, {
								name : 'repName'
							}, {
								name : 'modName'
							}, {
								name : 'aleResource'
							}, {
								name : 'aleLine'
							}, {
								name : 'rulName'
							}, {
								name : 'rulId'
							}, {
								name :'rulSeverity'
							}, {
								name : 'rulCategory'
							}, {
								name : 'rulDescription'
							}]
				});

		var ReportDetailStore = Ext.create('Ext.data.Store', {
					autoload : true,
					pageSize : pSize,
					model : 'ReportDetailModel',
					remoteSort : true,
					remoteFilter : true,
					proxy : {
						type : 'ajax',
						url : 'report_reportDetail.action',
						method : 'POST',
						reader : {
							idProperty : 'repId',
							root : 'result.list'
						},
						simpleSortMode : true
					}
				});

		var AlertStore = Ext.create('Ext.data.Store', {
			autoload : true,
			pageSize : pSize,
			model : 'AlertModel',
			remoteSort : true,
			remoteGroup : true,
			buffered : true,
			leadingBufferZone : 300,
			pageSize : 100,
			proxy : {
				type : 'ajax',
				url : 'report_alertList.action',
				method : 'POST',
				reader : {
					idProperty : 'alertId',
					root : 'result.list',
					totalProperty : 'total'
				},
				simpleSortMode : true,
				simpleGroupMode : true,
				groupParam : 'sort',
				groupDirectionParam : 'dir'
			},
			sorters : [{
						property : 'rulSeverity',
						direction : 'ASC'
					}],
			listeners : {
				groupchange : function(store, groupers) {
					var sortable = !store.isGrouped(), headers = grid.headerCt
							.getVisibleGridColumns(), i, len = headers.length;

					for (i = 0; i < len; i++) {
						headers[i].sortable = (headers[i].sortable !== undefined)
								? headers[i].sortable
								: sortable;
					}
				},
				beforeprefetch : function(store, operation) {
					if (operation.groupers && operation.groupers.length) {
						delete operation.sorters;
					}
				}
			}
		});
		
		var ReportInfoForm = Ext.create('Ext.form.Panel', {
			itemId : 'ReportInfoForm',
			xtype : 'form',
			title : '规则信息',
			frame : true,
			bodyPadding : 15,
					items : [{
								xtype : 'displayfield',
								fieldLabel : '应用名称',
								itemId : 'appName',
								name : 'application.appName'
								,
							}, {
								xtype : 'displayfield',
								fieldLabel : '创建时间',
								name : 'repCreateTime',
								renderer : Ext.util.Format
										.dateRenderer('Y-m-d H:i:s')
							}, {
								xtype : 'displayfield',
								fieldLabel : '报告类型',
								name : 'repType',
								hidden:true
							}, {
								xtype : 'displayfield',
								fieldLabel : '行数',
								name : 'repLines',
								hidden:true
							}, {
								xtype : 'displayfield',
								fieldLabel : '警告数',
								name : 'repAlerts'
			}],
			listeners : {
				beforerender : function(form, opts) {
					Ext.Ajax.request({
						url : 'report_reportDetail.action',
						params : {
							repId : JSON.stringify(reportId)
						},
						method : 'POST',
						success : function(response) {
							var response = Ext.JSON
									.decode(response.responseText);
							console
									.log(response.result.list[0].appName);
							ReportInfoForm.getForm()
									.setValues(response.result.list[0]);
							ReportInfoForm
									.down("#appName")
									.setValue(response.result.list[0].appName);
						},
						failure : function(response) {
							Ext.Msg.alert('提示', '信息获取失败!');
						}
					});
				}
			}
		});
		
		var RuleForm = Ext.create('Ext.form.Panel', {
			id : 'RuleForm'+reportId,
			itemId : 'RuleForm',
			title : '规则信息',
			frame : true,
			padding : 10,
			height : 500,
			width : 500,
			fieldDefaults : {
				msgTarget : 'side',
				labelWidth : 75
			},
			defaultType : 'textfield',
			defaults : {
				anchor : '100%'
			},
			items : [{
						xtype : 'textfield',
						itemId : 'rulName',
						name : 'rulName',
						fieldLabel : '规则名',
						readOnly : true
					}, {
						xtype : 'textfield',
						itemId : 'rulesets',
						name : 'rulesets',
						fieldLabel : '规则集',
						readOnly : true
					}, {
						xtype : 'textfield',
						itemId : 'rulCategory',
						name : 'rulCategory',
						fieldLabel : '规则类别',
						readOnly : true
					}, {
						xtype : 'textfield',
						itemId : 'rulSeverity',
						name : 'rulSeverity',
						fieldLabel : '严重程度',
						readOnly : true
					}, {
						xtype : 'textareafield',
						itemId : 'rulDescription',
						name : 'rulDescription',
						fieldLabel : '规则描述',
						autoScroll : true,
						readOnly : true
					},]
		});
		
		
		var AlertGrid = Ext.create('Ext.grid.Panel', {
			width : 700,
			height : 500,
			margin : 0,
			columnLines : true,
			padding : 0,
			title : '警告列表：',
			store : AlertStore,
			loadMask : true,
			selModel : {
				pruneRemoved : false
			},
			multiSelect : true,
			viewConfig : {
				trackOver : false,
				stripeRows : true
			},
			features : [{
						ftype : 'grouping',
						hideGroupedHeader : false
					}],
			columns : [{
						tdCls : 'x-grid-cell-topic',
						text : "来源",
						dataIndex : 'aleResource',
						flex : 1,
						sortable : true
					}, {
						text : "行数",
						dataIndex : 'aleLine',
						width : 100,
						sortable : true
					}, {
						text : "触发规则",
						dataIndex : 'rulName',
						flex : .5,
						sortable : true,
						groupable : false,
					}],
			listeners : {
				beforerender : function(grid, opts) {
					AlertStore.load({
								params : {
									repId : JSON.stringify(reportId)
								}
							});
				},
				select : function(grid, record, index, eOpts) {
					var alertId = record.data['alertId'];
					showRuleInfo(grid, record, index, alertId);
				}
			}
				// renderTo: Ext.getBody()
			});
		
		function showRuleInfo(grid, record, index, eOpts) {
			console.log(record);
			var ruleForm = Ext.getCmp('RuleForm'+reportId);
			var sev = record.data['rulSeverity'];
			var cat = record.data['rulCategory'];
			
			var getSeverity = function(sev){
				if(sev == 0)return "轻微";
    			if(sev == 1)return "一般";
    			if(sev == 2)return "严重";
			};
			var getCategory = function(cat){
				if(cat == 0)return "文件系统";
    			if(cat == 1)return "数据库";
    			if(cat == 2)return "安全";
    			if(cat == 3)return "云平台服务";
    			if(cat == 4)return "其他";
			};
			var severity = getSeverity(sev);
			var category = getCategory(cat);
			
			ruleForm.down('#rulName').setValue(record.data['rulName']);
			ruleForm.down('#rulDescription').setValue(record.data['rulDescription']);
			ruleForm.down('#rulSeverity').setValue(severity);
			ruleForm.down('#rulCategory').setValue(category);
			
			Ext.Ajax.request({
						url : 'report_ruleDetail.action',
						params : {
							ruleId : record.data['rulId']
						},
						method : 'POST',
						success : function(response) {
							var result = Ext.JSON.decode(response.responseText);
							ruleForm.down('#rulesets').setValue(result.result.list.toString());
						},
						failure : function(response) {
						}
					});
		}
		
		
		

		var AlertContainer = Ext.create('Ext.container.Container', {
					width : '100%',
					itemId : 'AlertContainer',
					padding : 0,
					margin : 0,
					bodyPadding : 0,
					requires : ['Ext.layout.container.Table'],
					layout : {
						type : 'table',
						columns : 2
					},
					defaults : {
						xtype : 'panel',
						width : '100%',
						height : '100%',
						bodyPadding : 0
					},
					items : [AlertGrid,RuleForm]
				});
		var tab = Ext.getCmp('mainContent').getActiveTab();
		tab.items.add(ReportInfoForm);
		tab.items.add(AlertContainer);
		tab.doLayout();
	}
	var tab = Ext.getCmp('mainContent').getActiveTab();
	var reportId = tab.reportId;
	pageLoad();
});